package cn.seaboot.admin.reverse.dao;

import cn.seaboot.admin.reverse.bean.DataColumn;
import cn.seaboot.admin.reverse.bean.DataTable;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 系统基数据查询
 * MySQL列 [t_db_data_columns]
 * MySQL表 [t_db_data_tables]
 *
 * @author ChenSS on 2018-06-14 00:40
 */
@Repository
public interface DataDao {

    /**
     * 从information_schema表中获取系统的表结构信息
     *
     * @param schemaName 数据库名
     * @param tableName  表名
     * @return update-row's count
     */
    int initTable(String schemaName, String tableName);

    /**
     * 从information_schema表中获取系统的表结构信息
     *
     * @param schemaName 数据库名
     * @param tableName  表名
     * @return update-row's count
     */
    int initColumn(String schemaName, String tableName);

    /**
     * 清除数据
     *
     * @param schemaName 数据库名
     * @param tableName  表名
     * @return update-row's count
     */
    int deleteTable(String schemaName, String tableName);

    /**
     * 清除数据
     *
     * @param schemaName 数据库名
     * @param tableName  表名
     * @return update-row's count
     */
    int deleteColumn(String schemaName, String tableName);

    /**
     * 获取数仓结构表中的所有的表名
     *
     * @param schemaName 数据库名
     * @return listString
     */
    List<String> queryAllTableName(String schemaName);

    /**
     * 获取单表信息
     *
     * @param schemaName 数据库名
     * @param tableName  表名
     * @return DataTable
     */
    DataTable queryTable(String schemaName, String tableName);

    /**
     * 获取单表信息
     *
     * @param schemaName 数据库名
     * @return DataTable
     */
    List<DataTable> queryTables(String schemaName );

    /**
     * 获取单表列信息
     *
     * @param schemaName 数据库名
     * @param tableName  表名
     * @return DataColumn
     */
    List<DataColumn> queryColumn(String schemaName, String tableName);
}
